package com.ztsoft.user.service.project;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ztsoft.user.pojo.entity.project.Choose;
import com.ztsoft.user.pojo.vo.project.ChooseRequest;
import com.ztsoft.user.utils.Result;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

public interface ChooseService extends IService<Choose> {

    Result<Object> getProject(Integer currentPage, Integer pageSize, String name, String region, String infoNumber);

    Result<Object> getChoose(String pid, Integer currentPage, Integer pageSize);

    Result<Object> addChoose(String pid, String[] ids);

    Result<Object> deleteChoose(String[] ids);

    Result<Object> deleteAll(String pid);

    Result<Object> updateChoose(ChooseRequest chooseRequest);

    Result<Object> getContact();

    Result<Object> commitChoose(String pid);

    Result<Object> getSelfChoose(String pid, Integer currentPage, Integer pageSize, Integer state, String orderId, String orderName, String batch, String projectName, Boolean cancel);

    Result<Object> getOperationChoose(String pid, Integer currentPage, Integer pageSize, Integer type, String orderId, Integer type2, String orderName, String batch, String projectName, Boolean cancel, String demandUnit);

    Result<Object> auditChoose(String orderId, String type, Choose choose);

    Result<Object> cancelChoose(String orderId, int type, MultipartFile fileList);

    void exportChooseList(String[] orderIds, String pid, int type, HttpServletResponse response);

    Result<Object> getOrderDetails(String orderId, Integer currentPage, Integer pageSize);

    Result<Object> updateChooseMatchTimeAndBatch(ChooseRequest chooseRequest);

    Result<Object> preserveChoose(ChooseRequest chooseRequest);

    void exportApprovalForm(String pid, String[] orderIds, HttpServletResponse response);

    void enclosureDisplay(HttpServletResponse response, String orderId);

    void generateTemplateZip(String[] orderIds, HttpServletResponse response);

    Result<Object> getChooseQuotaInfo(String orderId);

    List<Map<String, String>> queryBatch(String pid);

    List<Map<String, String>> querySubcontracted(String pid);

    Result<Object> queryStatistics(String pid, Integer currentPage, Integer pageSize, Integer type, String batch, String demandUnit, String packageName, String subcontract, String subcontracted, String startTime, String endTime);

    void exportStatistics(String pid, Integer type, Choose choose, HttpServletResponse response);

    Result<Object> fallbackChoose(ChooseRequest chooseRequest);
}